// #include <iostream>
// #include<string>
//
// using namespace std;
//
// //dynamic_cast类型转换
//
// class parent
// {
// public:
//     virtual void print()
//     {
//         cout << "parent" <<endl;
//     }
// protected:
//
// };
//
// class son:public parent
// {
// public:
//     void print()
//     {
//         cout << "parent" <<endl;
//     }
// protected:
//
// };
//
// class A
// {
// public:
//     virtual void print_A()
//     {
//         cout << "A" << endl;
//     }
// };
//
// class B
// {
// public:
//     virtual void print_B()
//     {
//         cout << "B" << endl;
//     }
// };
//
// class C:public A,public B
// {
//
// };
//
//
// int main()
// {
//
//     parent par;
//     son s;
//     //上行转换
//     parent* pp = dynamic_cast<parent*>(&s);
//     pp->print();
//
//     parent*  pp2 = static_cast<parent*>(&s);
//     pp2->print();
//
//     //报错
//     // son* pt = dynamic_cast<son*>(&par);
//     son* pt = static_cast<son*>(&par);
//
//     //交叉转换 子类对象通过父类之间的转换
//
//     A* a = new C;
//     B* b = dynamic_cast<B*>(a);
//     b->print_B();
//
//     return 0;
// }